package com.doit.day01;

import redis.clients.jedis.Jedis;

import java.util.HashMap;

public class Consumer {
    public static void main(String[] args) throws InterruptedException {
        HashMap<String, Integer> map = new HashMap<>();
        //将生产者生产的代码拿出来，放到缓冲区中
        Jedis jedis = new Jedis("linux01", 6379);
        while (true){
            jedis.rpoplpush("producer_task", "buffer_task");
            String buffer_task = jedis.rpop("buffer_task");
            System.out.println("正在消费任务，任务名称叫：" + buffer_task);
            if (buffer_task.equals("abc")) {
                //每次去缓冲区里面去查看一下，这个任务之前是否失败过，如果有失败过，代表取出来的count是有数据的，如果之前没有失败过
                Integer count = map.getOrDefault(buffer_task, 0);
                if (count >= 3) {
                    //代表失败了三次,需要给他放在生产者队列里面
                    System.out.println("失败三次，返回生产者，任务名称叫：" + buffer_task);
                    jedis.lpush("producer_task", buffer_task);
                    map.put(buffer_task, 0);
                    System.out.println(map);
                } else {
                    //有三次重试的机会
                    System.out.println("这个任务是有问题的，需要重新放回到缓冲区，任务名称叫：" + buffer_task);
                    jedis.lpush("buffer_task", buffer_task);
                    map.put(buffer_task, count + 1);
                    System.out.println(map);
                }

            }else {
                System.out.println("任务消费成功"+buffer_task);
            }
            Thread.sleep(150);
        }





    }
}
